-
현재 대다수 RISC이다.
- x86이나 amd cpu들은 CISC 명령어들을 처리하지만 이들을 micro ops로 쪼개서 RISC 구조로 실행하기 때문에 RISC cpu
- 컨트롤러가 가끔 CISC 사용
- datapath 별 명령어가 적어서 Reduced Instruction Set Computer
-
x86 컴퓨터가 한 명령어 체계만 쓰고 있는 것이 아님
- sse, AVX 등도 함께 사용
- Multi-Datapath based RISC
- 명령어 체계 별로 datapath 가짐
-
I 버스, D 버스 쓰는 경우 하버드 아키텍처
- 폰 노이만 아키텍처와 다르다!
-
APIC(Advanced Programmable Interrupt Controller)
-
DMA(Direct Memory Access)
- 특정 하드웨어 하위 시스템이 CPU와 독립적으로 메인 시스템 메모리에 접근할 수 있게 해주는 컴퓨터 시스템의 기능
- DMA에서 LPC핀의 경우 서버랑 통신할때 사용
-
Low Pin Count(LPC) : 하드웨어적으로 연결하는 핀
- cpu에 낮은 광대역 장치 연결하는 인터페이스
-
Bare-metal : 가상화에서 가상 cpu 안의 값을 외부 장치가 바꾸는 기술
- 소프트웨어 하드웨어 단 경계를 넘어 직접 접근하는 것
- register 직접 접근
- physical register도 접근 가능
-
가상화의 경우 관리자가 편해짐
- e.g. 사용자 cpu를 no operation으로 작동 못하게할 수 있음
- 프로세서에서 사용할 경우 장치 직접 제어가 가능해짐
-
Controller는 IO를 위해 이미 Bare-metal이다.
-
컨트롤러도 레지스터 가짐
- 장치가 제어 역할을 하면 레지스터 가짐
- register 직접 접근 가능 여부가 cpu와의 차이
-
- char형은 int 형에서 인코딩 테이블에 맞춰 치환해주는 형태
-
SR-IOV(Single Root I/O Virtualization)
- PF[Physical Function] : 물리적인 PCI 카드를 나타냄
- VF[Virtual Function] : 가상 PCI 카드를 생성해 줄 수 있는 기능
-
정의 → #define : 심볼 테이블에 명시함
- 자료형, 함수명, 변수명 등 대다수 C언어 문법 안에 존재하는 것을 대상으로 할 수 있음
- 선언과는 별개이지만 별칭(여러개 가능)을 붙였다고 볼 수 있음
-
gcc -E hello.c
- -E 옵션 : 전처리 과정 화면에 출력
-
stdio.h
- 시스템과 관련한 변수, 메모리 주소, 상수들을 선언
- 메모리와 I/O 관계 정의
-
primitive data format : 선언 내리면 할당되어 있음
- int
- float
- char
- *
- C언어 C89에서는 선언, 할당, 대입을 한번에 할 수 없었지만(에러 발생) C99부터 사용 가능
- 어셈블러(컴퓨터 자체가)는 메모리 주소만으로 자료형알 수 없음
-
printf, scanf : 특수한 함수
- va_args : 인자 개수가 가변적이고 제한이 없다.
- 커널에서 한계가 있음
-
C 컴파일러의 4 stage : 만들 수 있는 바이너리 종류 4가지
- 1st : Raw image ← 이 단계부터 printf, scanf 사용 가능
- 2nd : KERNEL API
- 3rd : Library
- 4th : execute file
System HW와 C언어 연관 기술
2020-07-06